package com.codemart.lanze.modules.sys.model;

import java.io.Serializable;
import java.util.Date;

import org.springframework.data.annotation.Transient;
import org.springframework.format.annotation.DateTimeFormat;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.codemart.lanze.common.base.entity.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @description: 用户
 * @author: lanze
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "tb_user", resultMap = "BaseResultMap")
public class User extends BaseEntity<User> {

	@TableField(exist = false)
	private static final long serialVersionUID = 1L;

	/**
	 * 用户名
	 */
	private String username;
	/**
	 * 密码
	 */
	private String password;
	/**
	 * 加密密码的盐
	 */
	private String salt;
	/**
	 * 真实姓名
	 */
	private String realName;
	/**
	 * 手机号
	 */
	private String mobilePhone;
	/**
	 * 性别 true 男 false 女
	 */
	private Boolean sex;

	/**
	 * 邮箱
	 */
	private String email;
	/**
	 * 是否禁用 true禁用 false 启用
	 */
	private Boolean isLock;
	/**
	 * 是否删除 true 删除 false 未删除
	 */
	private Boolean isDel;

	/**
	 * 是否是超级管理员
	 */
	private Boolean isAdmin;
	/**
	 * 最近一次登录时间
	 */
	private Date loginTime;

	@Transient
	private String roleName;

	/** 创建时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "创建时间")
	private java.util.Date createTime;

	/** 创建者 */
	@ApiModelProperty(value = "创建者")
	private java.lang.String createBy;

	/** 更新时间 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "更新时间")
	private java.util.Date updateTime;

	/** 更新者 */
	@ApiModelProperty(value = "更新者")
	private java.lang.String updateBy;

	/** delFlag */
	@ApiModelProperty(value = "delFlag")
	private java.lang.String delFlag;

	@Override
	protected Serializable pkVal() {
		return getId();
	}
}
